// #include <iostream>
// #include <ostream>
// #include<string>
//
// using namespace std;
//
// template<class _Ty1,class _Ty2>
// class Data
// {
//
//
// public:
//     Data(_Ty1 first,_Ty2 second):first(first),second(second)
//     {
//         cout << first << endl;
//         cout << second << endl;
//     }
//
//     void print()
//     {
//         cout << first << endl;
//         cout << second << endl;
//     }
//
//
//     friend std::ostream& operator<<(std::ostream& os, const Data& obj)
//     {
//         return os
//             << "first: " << obj.first
//             << " second: " << obj.second;
//     }
//
// protected:
//     _Ty1 first;
//     _Ty2 second;
// };
//
// int main()
// {
//
//     Data<int,int> d1(1,1);
//     d1.print();
//
//     Data<Data<int,int>,Data<int,int>> d2(Data<int,int>(1,1),Data<int,int>(2,2));
//     using Type1=Data<int,int>;
//
//
//
//     return 0;
// }